new는 내부적으로 두 가지의 내부 동작이 진행된다.
먼저 메모리가 할당(operator new)되고, 이후 할당된 메모리에 대해 한개 이상의 생성자가 호출된다.
delete 또한 두 가지의 내부 동작이 진행된다.
먼저 기존에 할당되었던 메모리에 대한 한개 이상의 소멸자가 호출되고, 이후 메모리가 해제(operator delete)된다.
delete 연산자는 소멸자가 호출되는 횟수만큼 적용된다.
new를 통해 객체의 배열이 힙에 동적으로 할당될 때,
가장 앞에 배열의 개수(n)이 정의되고 이후에 n개의 객체가 배치된다.
delete[]를 사용하면, 포인터가 배열을 가르키고 있음을 알려주고, 해당 영역의 메모리를 해제한다.
(delete를 사용하면, 단일 객체라고 인식한다.)